package hyy_2022;

/**
 * 给定一个字符串columnTitle, 表示excel表格中的列名称, 返回该列名称对应的列序号
 * A -> 1
 * B -> 2
 * C -> 3
 * ...
 * Z -> 26
 * AA -> 27
 * AB -> 28
 *
 * 当列名称长度为n时, 列名称的每个字母都有26种不同的取值, 因此长度为n的不同列名称有26^n个
 * n = 1时, 列名称的取值范围 A - Z,分别对应于 1 - 26
 * n > 1时, 考虑最高位对列序号的增量
 *
 */
public class _0817_171_TitleToNumber {

    public int titleToNumber(String columnTitle) {
        int number = 0;
        int multiple = 1;
        for(int i = columnTitle.length() - 1;i >= 0; i--) {
            int k = columnTitle.charAt(i) - 'A' + 1;
            number += k * multiple;
            multiple *= 26;
        }
        return  number;
    }
}
